package designMode.templateMethodPattern;

/*模板方法模式是一种行为型设计模式，
        它在一个抽象类中定义了一个算法（业务逻辑）的骨架，
        具体步骤的实现由子类提供，它通过将算法的不变部分放在抽象类中，
        可变部分放在子类中，达到代码复用和扩展的目的。

        复用：所有子类可以直接复用父类提供的模板方法，即上面提到的不变的部分。
        扩展：子类可以通过模板定义的一些扩展点就行不同的定制化实现。
        模板方法模式的特点:

        算法骨架：在基类中定义一个算法的固定执行步骤（模板方法），具体实现步骤交给子类完成。
        复用代码：子类复用基类中定义的通用逻辑，仅需实现特定步骤。
        遵循开闭原则：基类的骨架逻辑对扩展开放，对修改关闭。*/
//模板方法模式的组成
//        抽象类（AbstractClass）：定义模板方法，包含算法的骨架。声明需要子类实现的抽象方法。
//        具体类（ConcreteClass）： 实现抽象方法，为算法的某些步骤提供具体实现。
//        模板方法（TemplateMethod）：调用一系列步骤方法，构成算法的完整逻辑。
public class TestTemplate {
    public static void main(String[] args) {
        DataProcessor csvProcessor = new CSVDataProcessor();
        csvProcessor.process();

        DataProcessor jsonProcessor = new JSONDataProcessor();
        jsonProcessor.process();
    }
}
